// 8 --> 92

#include<bits/stdc++.h>
using namespace std;
const int N=10;
int a[N];//a[i]表示第i行上的皇后放于a[i]列上， 假设a[3]=7 表示第3行的皇后放于第7列
int cnt,n;

bool check(int x,int y){//第x行的皇后能否放在y列上
	//枚举从第一行开始的皇后与要安排的那一行的皇后是否发生冲突 
	for(int i=1;i<=x;i++){
		if(a[i]==y) return false;
		if(i+a[i]==x+y) return false;
		if(i-a[i]==x-y) return false;
	} 
	return true;
}
  
void dfs(int row){//表示第row行的皇后应放于何处 
	if(row==n+1){
		//产生了一组解
		cnt++;
		return; 
	}
	//枚举每一列的皇后，共n列，判断某行的皇后能否放在该列上 
	for(int i=1;i<=n;i++){
		//check第row行的皇后能否放在i列上面 
		if(check(row,i)){
			a[row]=i;
			dfs(row+1);
			a[row]=0;
		}
	}
}
int main(){
	cin>>n;
	dfs(1);//从第一行的皇后开始dfs
	cout<<cnt;
	return 0; 
}
